# 引入使用的库
import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
plt.rc('figure', figsize=(10, 10))  #把plt默认的图片size调大一点

#读取数据文件，查看数据大体情况
df = pd.read_csv('./shenzhen.csv')
df.head()
df.describe()

#房间大小超过10000平米的数据
df[df['hourseSize']>10000]
# 删除超过10000平米的数据
print(len(df))
df = df.drop(df[df['hourseSize']>10000].index)
print(len(df))

#查看每列的总数、数据类型
df.info()

# 重复值处理
# 查看重复值
df[df.duplicated()]


# 发现没有重复数据，数据清洗完成，开始数据分析。
# 1.不同行政区、户型、朝向、装修与二手房房源数量的对比

# 不同行政区房源数量占比
area_house_count = df.groupby('area')['area'].count()
area_house_count.sort_values(ascending=False,inplace=True)  #按照降序排列
# area_house_count

# 不同户型房源数量占比
hourseType_count = df.groupby('hourseType')['hourseType'].count()
hourseType_count.sort_values(ascending=False,inplace=True)  #按照降序排列
new_hourseType_count = hourseType_count[hourseType_count>700]
new_hourseType_count['其它'] = hourseType_count[hourseType_count<700].sum()
# new_hourseType_count

# 不同朝向房源数量占比()
direction_count = df.groupby('direction')['direction'].count()  
new_direction_count =direction_count[direction_count>800]
new_direction_count['其它'] = direction_count[direction_count<800].sum()
new_direction_count.sort_values(ascending=False)

# 不同装修
fitment_count = df.groupby('fitment')['fitment'].count().sort_values(ascending=False)
fitment_count.sort_values(ascending=False,inplace=True)


# 绘图
fig=plt.figure(figsize=(12,9),dpi=90)
ax1=fig.add_subplot(2,2,1) 
plt.title("不同行政区房源数量占比情况")
area_house_count.plot.pie(shadow=True,autopct='%0.f%%',explode=[0.05,0.05,0.05,0.05,0,0,0,0],labeldistance=1.1,startangle=90)

ax2=fig.add_subplot(2,2,2)
plt.title("不同户型房源数量占比情况")
new_hourseType_count.plot.pie(shadow=True,autopct='%0.f%%',explode=[0.05,0,0,0,0,0,0,0,0,0],labeldistance=1.1,startangle=90)

ax3=fig.add_subplot(2,2,3)
plt.title("不同朝向房源数量占比情况")
new_direction_count.plot.pie(shadow=True,autopct='%0.f%%',explode=[0,0,0,0,0.05,0,0,0,0],labeldistance=1.1,startangle=90)

ax4=fig.add_subplot(2,2,4)
plt.title("不同装修类型的占比情况")
fitment_count.plot.pie(shadow=True,autopct='%0.f%%',labeldistance=1.1,explode=[0.05,0,0,0],startangle=45) 
plt.show()


# 2.不同行政区对房价的影响

# 不同区的总价对比
area_house_mean_totalprice = df.groupby('area')['total_price'].mean()
area_house_mean_totalprice.sort_values(ascending=False,inplace=True)
area_house_mean_totalprice

# 不同区的单价对比
area_house_mean_unitprice = df.groupby('area')['unit_price'].mean()
area_house_mean_unitprice.sort_values(ascending=False,inplace=True)
area_house_mean_unitprice

fig = plt.figure(figsize=(15,5),dpi=100)
ax1 = fig.add_subplot(1,2,1)
plt.title("深圳不同地区总价对比")
plt.ylim([300,1100])  #设置y坐标轴的范围
rects = area_house_mean_totalprice.plot.bar(alpha=0.7,color='#1E90FF')
plt.grid(alpha=0.5,color='#DDA0DD',linestyle='--',axis='y')

ax2 = fig.add_subplot(1,2,2)
plt.title("深圳不同地区单价对比")
plt.ylim([30000,100000])
area_house_mean_unitprice.plot.bar(alpha=0.7,color='#4876FF')
plt.grid(alpha=0.5,color='#DDA0DD',linestyle='--',axis='y')

plt.show()

